//============================================================================
// Name        : sdl_test.cpp
// Author      : 
// Version     :
// Copyright   : Your copyright notice
//============================================================================

#include <string>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_ttf.h>
#include <SDL/SDL_mixer.h>

using namespace std;

const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;

SDL_Surface *message    = NULL;
SDL_Surface *background = NULL;
SDL_Surface *screen     = NULL;

SDL_Surface *load_image(std::string filename)
{
    SDL_Surface *loadedImage = NULL;
    SDL_Surface *optimizedImage = NULL;

    //loadedImage = SDL_LoadBMP(filename.c_str());
    loadedImage = IMG_Load(filename.c_str());
    if(loadedImage != NULL){
        optimizedImage = SDL_DisplayFormat(loadedImage);
        SDL_FreeSurface(loadedImage);
    }
    return optimizedImage;
}

void apply_surface(int x, int y, SDL_Surface* src, SDL_Surface* dst)
{
    SDL_Rect offset;

    offset.x = x;
    offset.y = y;

    SDL_BlitSurface(src, NULL, dst, &offset);
}

int main(int argc, char **argv)
{

	SDL_Init(SDL_INIT_EVERYTHING);

	screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE);
    if(screen == NULL)
        return 1;

    SDL_WM_SetCaption("hello World", NULL);
    message = load_image("./res/hello.bmp");
    background = load_image("./res/back.bmp");
    apply_surface(0, 0, background, screen);
    apply_surface(320, 0, background, screen);
    apply_surface(0, 240, background, screen);
    apply_surface(320, 240, background, screen);

    apply_surface(180, 140, message, screen);

	SDL_Flip(screen);
	SDL_Delay(5000);

    SDL_FreeSurface(message);
    SDL_FreeSurface(background);
	SDL_Quit();
	return 0;
}
